/**
 */
package org.xtext.example.mydsl.componentBasedSoftwareDevelopment.impl;

import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;

import org.eclipse.emf.ecore.impl.EFactoryImpl;

import org.eclipse.emf.ecore.plugin.EcorePlugin;

import org.xtext.example.mydsl.componentBasedSoftwareDevelopment.*;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model <b>Factory</b>.
 * <!-- end-user-doc -->
 * @generated
 */
public class ComponentBasedSoftwareDevelopmentFactoryImpl extends EFactoryImpl implements ComponentBasedSoftwareDevelopmentFactory
{
  /**
   * Creates the default factory implementation.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public static ComponentBasedSoftwareDevelopmentFactory init()
  {
    try
    {
      ComponentBasedSoftwareDevelopmentFactory theComponentBasedSoftwareDevelopmentFactory = (ComponentBasedSoftwareDevelopmentFactory)EPackage.Registry.INSTANCE.getEFactory(ComponentBasedSoftwareDevelopmentPackage.eNS_URI);
      if (theComponentBasedSoftwareDevelopmentFactory != null)
      {
        return theComponentBasedSoftwareDevelopmentFactory;
      }
    }
    catch (Exception exception)
    {
      EcorePlugin.INSTANCE.log(exception);
    }
    return new ComponentBasedSoftwareDevelopmentFactoryImpl();
  }

  /**
   * Creates an instance of the factory.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public ComponentBasedSoftwareDevelopmentFactoryImpl()
  {
    super();
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  @Override
  public EObject create(EClass eClass)
  {
    switch (eClass.getClassifierID())
    {
      case ComponentBasedSoftwareDevelopmentPackage.MAIN: return createMain();
      case ComponentBasedSoftwareDevelopmentPackage.ABSTRACT_ELEMENT: return createAbstractElement();
      case ComponentBasedSoftwareDevelopmentPackage.PACKAGE_DECLARATION: return createPackageDeclaration();
      case ComponentBasedSoftwareDevelopmentPackage.PACKAGE_IMPORT: return createPackageImport();
      case ComponentBasedSoftwareDevelopmentPackage.COMPONENT_STATEMENT: return createComponentStatement();
      case ComponentBasedSoftwareDevelopmentPackage.COMPONENT_BETWEEN_CONSTRAINT: return createComponentBetweenConstraint();
      case ComponentBasedSoftwareDevelopmentPackage.COMPONENT_ALTERNATION_CONSTRAINT: return createComponentAlternationConstraint();
      case ComponentBasedSoftwareDevelopmentPackage.COMPONENT_LEADSTO_CONSTRAINT: return createComponentLeadstoConstraint();
      case ComponentBasedSoftwareDevelopmentPackage.COMPONENT_CAUSEDBY_CONSTRAINT: return createComponentCausedbyConstraint();
      case ComponentBasedSoftwareDevelopmentPackage.COMPONENT_PRECEDES_CONSTRAINT: return createComponentPrecedesConstraint();
      case ComponentBasedSoftwareDevelopmentPackage.COMPONENT_FOLLOWS_CONSTRAINT: return createComponentFollowsConstraint();
      case ComponentBasedSoftwareDevelopmentPackage.COMPONENT_ACTION_STATEMENT: return createComponentActionStatement();
      case ComponentBasedSoftwareDevelopmentPackage.BIND_COMPONENTS: return createBindComponents();
      case ComponentBasedSoftwareDevelopmentPackage.COMPONENT_INSTANCE: return createComponentInstance();
      case ComponentBasedSoftwareDevelopmentPackage.COMPONENT: return createComponent();
      case ComponentBasedSoftwareDevelopmentPackage.CONTRACT: return createContract();
      case ComponentBasedSoftwareDevelopmentPackage.INTERFACE: return createInterface();
      case ComponentBasedSoftwareDevelopmentPackage.ACTION: return createAction();
      case ComponentBasedSoftwareDevelopmentPackage.PARAMETER: return createParameter();
      case ComponentBasedSoftwareDevelopmentPackage.TYPE: return createType();
      case ComponentBasedSoftwareDevelopmentPackage.DATA_TYPE: return createDataType();
      case ComponentBasedSoftwareDevelopmentPackage.ENTITY: return createEntity();
      case ComponentBasedSoftwareDevelopmentPackage.ATTRIBUTE: return createAttribute();
      default:
        throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
    }
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Main createMain()
  {
    MainImpl main = new MainImpl();
    return main;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public AbstractElement createAbstractElement()
  {
    AbstractElementImpl abstractElement = new AbstractElementImpl();
    return abstractElement;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public PackageDeclaration createPackageDeclaration()
  {
    PackageDeclarationImpl packageDeclaration = new PackageDeclarationImpl();
    return packageDeclaration;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public PackageImport createPackageImport()
  {
    PackageImportImpl packageImport = new PackageImportImpl();
    return packageImport;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public ComponentStatement createComponentStatement()
  {
    ComponentStatementImpl componentStatement = new ComponentStatementImpl();
    return componentStatement;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public ComponentBetweenConstraint createComponentBetweenConstraint()
  {
    ComponentBetweenConstraintImpl componentBetweenConstraint = new ComponentBetweenConstraintImpl();
    return componentBetweenConstraint;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public ComponentAlternationConstraint createComponentAlternationConstraint()
  {
    ComponentAlternationConstraintImpl componentAlternationConstraint = new ComponentAlternationConstraintImpl();
    return componentAlternationConstraint;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public ComponentLeadstoConstraint createComponentLeadstoConstraint()
  {
    ComponentLeadstoConstraintImpl componentLeadstoConstraint = new ComponentLeadstoConstraintImpl();
    return componentLeadstoConstraint;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public ComponentCausedbyConstraint createComponentCausedbyConstraint()
  {
    ComponentCausedbyConstraintImpl componentCausedbyConstraint = new ComponentCausedbyConstraintImpl();
    return componentCausedbyConstraint;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public ComponentPrecedesConstraint createComponentPrecedesConstraint()
  {
    ComponentPrecedesConstraintImpl componentPrecedesConstraint = new ComponentPrecedesConstraintImpl();
    return componentPrecedesConstraint;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public ComponentFollowsConstraint createComponentFollowsConstraint()
  {
    ComponentFollowsConstraintImpl componentFollowsConstraint = new ComponentFollowsConstraintImpl();
    return componentFollowsConstraint;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public ComponentActionStatement createComponentActionStatement()
  {
    ComponentActionStatementImpl componentActionStatement = new ComponentActionStatementImpl();
    return componentActionStatement;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public BindComponents createBindComponents()
  {
    BindComponentsImpl bindComponents = new BindComponentsImpl();
    return bindComponents;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public ComponentInstance createComponentInstance()
  {
    ComponentInstanceImpl componentInstance = new ComponentInstanceImpl();
    return componentInstance;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Component createComponent()
  {
    ComponentImpl component = new ComponentImpl();
    return component;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Contract createContract()
  {
    ContractImpl contract = new ContractImpl();
    return contract;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Interface createInterface()
  {
    InterfaceImpl interface_ = new InterfaceImpl();
    return interface_;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Action createAction()
  {
    ActionImpl action = new ActionImpl();
    return action;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Parameter createParameter()
  {
    ParameterImpl parameter = new ParameterImpl();
    return parameter;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Type createType()
  {
    TypeImpl type = new TypeImpl();
    return type;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public DataType createDataType()
  {
    DataTypeImpl dataType = new DataTypeImpl();
    return dataType;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Entity createEntity()
  {
    EntityImpl entity = new EntityImpl();
    return entity;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Attribute createAttribute()
  {
    AttributeImpl attribute = new AttributeImpl();
    return attribute;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public ComponentBasedSoftwareDevelopmentPackage getComponentBasedSoftwareDevelopmentPackage()
  {
    return (ComponentBasedSoftwareDevelopmentPackage)getEPackage();
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @deprecated
   * @generated
   */
  @Deprecated
  public static ComponentBasedSoftwareDevelopmentPackage getPackage()
  {
    return ComponentBasedSoftwareDevelopmentPackage.eINSTANCE;
  }

} //ComponentBasedSoftwareDevelopmentFactoryImpl
